package com.hoshiicloud.shxping.dto;

import com.baomidou.mybatisplus.annotation.TableField;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;

import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * @author yangcheng
 * @version 1.0
 * @title: MemberAddressDto
 * @description: 会员收货地址DTO
 * @date 2019/6/4 10:06
 * @mail maiboyc@163.com
 */
@ApiModel
@Data
@Accessors(chain = true)
public class MemberAddressDto {

    /**
     * ID
     */
    @ApiModelProperty(name = "id", value = "ID", dataType = "java.lang.Long", hidden = true)
    private Long id;

    // 用户主键
    @NotNull(message = "用户主键ID不能为空")
    @ApiModelProperty(name = "userId", value = "用户主键ID", required = true, dataType = "java.lang.Long", example = "3171776001692664000")
    private Long userId;

    // 收货人姓名
    @NotNull(message = "收货人姓名不能为空")
    @ApiModelProperty(name = "name", value = "收货人姓名", required = true, dataType = "java.lang.String", example = "张大大")
    private String name;

    // 性别（1-男 2-女）
    @ApiModelProperty(name = "sex", value = "性别", required = true, dataType = "java.lang.Integer", example = "1")
    private Integer sex;

    // 身份证
    @ApiModelProperty(name = "idCard", value = "身份证", required = true, dataType = "java.lang.String", example = "42032419880904051X")
    private String idCard;

    // 手机号码
    @NotNull(message = "手机号码不能为空")
    @ApiModelProperty(name = "phone", value = "手机号码", required = true, dataType = "java.lang.String", example = "18289780098")
    private String phone;

    // 固话
    @ApiModelProperty(name = "telephone", value = "固话", required = true, dataType = "java.lang.String", example = "0591-8678573")
    private String telephone;

    // 邮编
    @ApiModelProperty(name = "postcode", value = "邮编", required = true, dataType = "java.lang.String", example = "350015")
    private String postcode;

    // 省份
    @ApiModelProperty(name = "province", value = "省份", required = true, dataType = "java.lang.String", example = "福建省")
    private String province;

    // 省份code
    @ApiModelProperty(name = "provinceCode", value = "省份code", required = true, dataType = "java.lang.String", example = "350000")
    private String provinceCode;

    // 城市
    @ApiModelProperty(name = "city", value = "城市", required = true, dataType = "java.lang.String", example = "福州市")
    private String city;

    // 城市code
    @ApiModelProperty(name = "cityCode", value = "城市code", required = true, dataType = "java.lang.String", example = "350000")
    private String cityCode;

    // 区域
    @ApiModelProperty(name = "area", value = "区域", required = true, dataType = "java.lang.String", example = "马尾区")
    private String area;

    // 区域code
    @ApiModelProperty(name = "areaCode", value = "区域code", required = true, dataType = "java.lang.String", example = "350015")
    private String areaCode;

    // 街道地址
    @ApiModelProperty(name = "address", value = "街道地址", required = true, dataType = "java.lang.String", example = "阳光城SOHOA栋2101")
    private String address;

    // 是否默认地址（0-否 1- 是）
    @ApiModelProperty(name = "defAddress", value = "是否默认地址", required = true, dataType = "java.lang.Integer", example = "1")
    private Integer defAddress;

    // 门牌号
    @ApiModelProperty(name = "housenumber", value = "门牌号", required = true, dataType = "java.lang.String", example = "1")
    private String housenumber;

    // 经度
    @ApiModelProperty(name = "longitude", value = "经度", required = true, dataType = "java.math.BigDecimal", example = "119.42842")
    private BigDecimal longitude;

    // 维度
    @ApiModelProperty(name = "latitude", value = "维度", required = true, dataType = "java.math.BigDecimal", example = "26.00757")
    private BigDecimal latitude;

    /**
     * 创建时间
     */
    @ApiModelProperty(name = "createdtime", value = "创建时间", required = true, dataType = "java.util.Date", hidden = true)
    private LocalDateTime createdtime;

    /**
     * 修改时间
     */
    @ApiModelProperty(name = "updatedtime", value = "修改时间", required = true, dataType = "java.util.Date", hidden = true)
    private LocalDateTime updatedtime;

    /**
     * 建立人
     */
    @ApiModelProperty(name = "createdby", value = "建立人", required = true, dataType = "java.lang.String", hidden = true)
    private String createdby;

    /**
     * 修改人
     */
    @ApiModelProperty(name = "updatedby", value = "修改人", required = true, dataType = "java.lang.String", hidden = true)
    private String updatedby;

    /**
     * 删除标识 0-未删除 1-已删除 默认0
     */
    @ApiModelProperty(name = "deleted", value = "删除标识", required = true, dataType = "java.lang.Integer", hidden = true)
    private Integer deleted;

    /**
     *当前页
     */
    @ApiModelProperty(name = "pageIndex", value = "当前页码", dataType = "java.lang.Long", hidden = true)
    @TableField(exist = false)
    private Long pageIndex = 1L;

    /**
     *每页数量从1开始
     */
    @ApiModelProperty(name = "pageSize", value = "每页大小", dataType = "java.lang.Long", hidden = true)
    @TableField(exist = false)
    private Long pageSize = 10L;

}
